﻿/// <summary>
/// Namespace for this program
/// </summary>
namespace BitsOfStuff
{
    /// <summary>
    /// Class that hold infrmaion about points that are result of analysis
    /// </summary>
    public class MySelectedPoint
    {
        private MyPoint _myPoint;

        /// <summary>
        /// Constructor of selected points
        /// </summary>
        /// <param name="myPoint">myPoint that is literaly this point</param>
        public MySelectedPoint(MyPoint myPoint)
        {
            _myPoint = myPoint;
        }

        /// <summary>
        /// Function that set index of this point in raw sequence of points
        /// </summary>
        /// <param name="index">index of this point in raw sequence</param>
        public void setIndex(int index)
        {
            _myPoint.setIndex(index);
        }

        /// <summary>
        /// return interlan points
        /// </summary>
        /// <returns>interlan point</returns>
        public MyPoint getPoint()
        {
            return _myPoint;
        }

        /// <summary>
        /// Function that return X coordinate of interlan point
        /// </summary>
        /// <returns>x coordinate of internal point</returns>
        public double getX()
        {
            return _myPoint.getX();
        }

        /// <summary>
        /// Function that return Y coordinate of interlan point
        /// </summary>
        /// <returns>n Y coordinate of interlan point</returns>
        public double getY()
        {
            return _myPoint.getY();
        }
    }

    /// <summary>
    /// Defivated class from MySelectedPoint, hold information that this point is start of end point of stroke
    /// </summary>
    public class StartEndPoint : MySelectedPoint
    {
        /// <summary>
        ///Constructor of MyselectedPoint
        /// </summary>
        /// <param name="myPoint">point</param>
        public StartEndPoint(MyPoint myPoint)
            : base(myPoint)
        {
        }
    }

    /// <summary>
    /// Defivated class from MySelectedPoint, hold information that this point is corner point
    /// </summary>
    public class CordnerPoint : MySelectedPoint
    {
        /// <summary>
        /// Constructor of corner point
        /// </summary>
        /// <param name="myPoint"></param>
        public CordnerPoint(MyPoint myPoint)
            : base(myPoint)
        {
        }
    }

    /// <summary>
    /// Defivated class from MySelectedPoint, hold information that this point is curved point
    /// </summary>
    public class CurvePoint : MySelectedPoint
    {
        /// <summary>
        /// Constructor of curved point
        /// </summary>
        /// <param name="myPoint"></param>
        public CurvePoint(MyPoint myPoint)
            : base(myPoint)
        {
        }
    }

    /// <summary>
    /// Defivated class from MySelectedPoint, hold information that this point short shape points
    /// </summary>
    public class ShortPoint : MySelectedPoint
    {
        /// <summary>
        /// Constructor of short shape point
        /// </summary>
        /// <param name="myPoint"></param>
        public ShortPoint(MyPoint myPoint)
            : base(myPoint)
        {
        }
    }
}